
const {exec} = require('child_process');




const regTime=str=>/^([01]\d|2[0-3]):[0-5]\d$/.test(str);  //正则，用于验证输入的参数是否符合xx:xx的时间格式


if(process.argv.length<3 ){

    console.error('请输入一个时间格式的参数，如19:00');

    process.exit();

}

if(!regTime(process.argv[2])){

    console.error('您输入的参数不符合xx:xx 时间格式')

    process.exit();
}


let date = new Date(  new Date().toLocaleDateString()+' '+process.argv[2]+':00'  ); //初始化一个今天对应时间的 Date对象

if(date - Date.now() <  0){ //若时间过了，把Date对象设为明天同一时间

    date = new Date(date.getTime() + 1000*60*60*24 )

}

console.log("将在 "+date.toLocaleString()+' 关机');

let delay = date - Date.now();


let hour = parseInt(delay/1000/60/60);  // 求出剩余多少个小时:   总毫秒/每小时的毫秒

let minutes = parseInt(  ( delay%(1000*60*60)   )/1000/60 );    //求出末尾的剩余分钟数   （总毫秒%每小时的毫秒）/每分钟毫秒

let seconds = parseInt(  ( delay%(1000*60)  )/1000 );   //求出末尾的剩余秒数 (总毫秒%每分钟的毫秒） / 1000


console.log(`离关机还剩 ${hour}小时,${minutes}分, ${seconds}秒`);




setTimeout(()=>{


    exec('shutdown /s',(error, stdout, stderr)=>{  //延时执行windows 关机 shutdown /s 命令


        if(error){

            console.log('error');

        }


        console.log(stdout);

    })


},delay)


